home *** CD-ROM | disk | FTP | other *** search
/ PC Player 2004 May / pc player 2004-05.iso / Demos / FarCry / Data1.cab / _3E5EF8DCEE1B45ADB2D144B76ADA5F24 < prev    next >
Encoding:
Text File  |  2004-01-06  |  4.2 KB  |  171 lines

  1. ----------------------------------------------------------------------------
  2. --
  3. -- Description :        Delayed proxymity trigger
  4. --
  5. -- Create by Alberto :    03 March 2002
  6. --
  7. ----------------------------------------------------------------------------
  8. AreaTrigger = {
  9.     type = "Trigger",
  10.  
  11.     Properties = {
  12.         bEnabled=1,
  13.         bTriggerOnce=0,
  14.         ScriptCommand="",
  15.     },
  16.  
  17.  
  18.     Editor={
  19.         Model="Objects/Editor/T.cgf",
  20.     },
  21.  
  22.     -- Who triggered me.
  23.     Who=nil,
  24.     Enabled=1,
  25.     Entered=0,
  26.     triggeredIn=0,
  27.     triggeredOut=0,
  28. }
  29.  
  30. function AreaTrigger:OnPropertyChange()
  31.     self:OnReset();
  32. end
  33.  
  34. function AreaTrigger:OnInit()
  35.  
  36.     self:RegisterState("Occupied");
  37.     self:RegisterState("Empty");
  38.  
  39.     self:EnableUpdate(0);
  40.     self:OnReset();
  41. end
  42.  
  43. function AreaTrigger:OnSave(stm)
  44.     --WriteToStream(stm,self.Properties);
  45.     stm:WriteInt(self.Enabled);
  46.     stm:WriteInt(self.triggeredIn);
  47.     stm:WriteInt(self.triggeredOut);
  48. end
  49.  
  50.  
  51. function AreaTrigger:OnLoad(stm)
  52.     --self.Properties=ReadFromStream(stm);
  53.     self:OnReset();
  54.     self.Enabled = stm:ReadInt();
  55.     self.triggeredIn = stm:ReadInt();
  56.     self.triggeredOut = stm:ReadInt();
  57. end
  58.  
  59. function AreaTrigger:OnShutDown()
  60. end
  61.  
  62. function AreaTrigger:OnReset()
  63.  
  64.     self.Enabled = self.Properties.bEnabled;
  65.     self.Who = nil;
  66.     self.UpdateCounter = 0;
  67.     self.Entered = 0;
  68.     self.triggeredIn = 0;
  69.     self.triggeredOut = 0;
  70.     self:GotoState( "Empty" );
  71. end
  72.  
  73. function AreaTrigger:Event_Enter( sender )
  74.     if ((self.Enabled ~= 1) or (self.Entered ~= 0)) then
  75.         return
  76.     end
  77.     self.Entered = 1;
  78.     --if ( sender ) then
  79.     --    System:LogToConsole( "Player "..sender:GetName().." Enter AreaTrigger "..self:GetName() );
  80.     --end
  81.     BroadcastEvent( self,"Enter" );
  82. end
  83.  
  84. function AreaTrigger:Event_Leave( sender )
  85.     if (self.Enabled ~= 1 or self.Entered == 0) then
  86.         return
  87.     end
  88.     --System:LogToConsole( "Player "..sender:GetName().." Leave AreaTrigger "..self:GetName() );
  89.     BroadcastEvent( self,"Leave" );
  90. end
  91.  
  92. function AreaTrigger:Event_Enable( sender )
  93.     self.Enabled = 1;
  94.     BroadcastEvent( self,"Enable" );
  95. end
  96.  
  97. function AreaTrigger:Event_Disable( sender )
  98.     self.Enabled = 0;
  99.     self:GotoState( "Empty" );
  100.     BroadcastEvent( self,"Disable" );
  101. end
  102.  
  103. -------------------------------------------------------------------------------
  104. -- Empty State ----------------------------------------------------------------
  105. -------------------------------------------------------------------------------
  106. AreaTrigger.Empty =
  107. {
  108.     -------------------------------------------------------------------------------
  109.     OnBeginState = function( self )
  110.         self.Who = nil;
  111.         self.UpdateCounter = 0;
  112.         self.Entered = 0;
  113.     end,
  114.  
  115.     -------------------------------------------------------------------------------
  116.     OnEndState = function( self )
  117.     end,
  118.     OnEnterArea = function( self,player,areaId )
  119.         -- Ignore if disabled.
  120.         if (self.Enabled ~= 1) then
  121.             return
  122.         end
  123.         if (self.Who==nil) then
  124.             self.Who = player;
  125.             self:GotoState( "Occupied" );
  126.         end
  127.     end,
  128. }
  129.  
  130. -------------------------------------------------------------------------------
  131. -- Empty State ----------------------------------------------------------------
  132. -------------------------------------------------------------------------------
  133. AreaTrigger.Occupied =
  134. {
  135.     -------------------------------------------------------------------------------
  136.     OnBeginState = function( self )
  137.         --if has already been triggered and bTriggerOnce is 1
  138.         --skip the envent
  139.         if((self.Properties.bTriggerOnce==1) and self.triggeredIn==1)then
  140.             self.Entered = 1;
  141.             return
  142.         end
  143.         self.triggeredIn=1;
  144.         self:Event_Enter(self.Who);
  145.  
  146.         if(self.Properties.ScriptCommand and self.Properties.ScriptCommand~="")then
  147.             System:LogToConsole("Executing: "..self.Properties.ScriptCommand);
  148.             dostring(self.Properties.ScriptCommand);
  149.         end
  150.     end,
  151.     -------------------------------------------------------------------------------
  152.     OnEndState = function( self )
  153.     end,
  154.  
  155.  
  156.     OnLeaveArea = function( self,player,areaId )
  157.         -- Ignore if disabled.
  158.         if (self.Enabled ~= 1) then
  159.             return
  160.         end
  161.         --System:LogToConsole("Sending on leave");
  162.         
  163.         if((self.Properties.bTriggerOnce~=1) or self.triggeredOut~=1)then
  164.             self.triggeredOut=1;
  165.             self:Event_Leave( self.Who );
  166.         end
  167.         
  168.         self.triggeredOut=1;
  169.         self:GotoState("Empty");
  170.     end,
  171. }